﻿/**
 * Proyecto: Cognitum
 * Global IT Services 2008
 * @author
 */
Cognitum.Cobranza.Recibo.Editor = Ext.extend(Karma.EBCard, {

    initComponent: function() {
        Ext.apply(this, {
            sections: [{
                title: 'Datos Recibo',
                items: [{
                    fieldLabel: 'Serie',
                    name: 'Serie'
                }, {
                    fieldLabel: 'Estatus',
                    name: 'Estatus',
                    xtype: 'enum.combo',
                    enumName: 'Cognitum.Dominio.Cobranza.EstatusReciboEnum',
                    disabled: true
                }, {
                    xtype: 'datefield',
                    name: 'Expedicion',
                    fieldLabel: 'Expedicion'
                }, {
                    xtype: 'datefield',
                    name: 'Cobertura',
                    fieldLabel: 'Cobertura'
                }, {
                    xtype: 'datefield',
                    name: 'Vencimiento',
                    fieldLabel: 'Vencimiento'
                }, {
                    fieldLabel: 'Prima Neta',
                    name: 'PrimaNeta',
                    xtype: 'numberfield',
                    listeners: {
                        'keyup': {
                            fn: this.onKeyup2,
                            scope: this
                        }
                    },
                    enableKeyEvents: true
                }, {
                    fieldLabel: 'Gastos',
                    name: 'Gastos',
                    xtype: 'numberfield',
                    listeners: {
                        'keyup': {
                            fn: this.onKeyup2,
                            scope: this
                        }
                    },
                    enableKeyEvents: true
                }, {
                    fieldLabel: 'Recargo',
                    name: 'Recargo',
                    xtype: 'numberfield',
                    listeners: {
                        'keyup': {
                            fn: this.onKeyup2,
                            scope: this
                        }
                    },
                    enableKeyEvents: true
                }, {
                    fieldLabel: 'Impuesto %',
                    name: 'Impuesto',
                    entityName: 'Impuestos',
                    xtype: 'entity.link',
                    listeners: {
                        'set': {
                            fn: this.calculaMonto,
                            scope: this
                        }
                    }
                }, {
                    fieldLabel: 'Impuesto',
                    name: 'ImpuestoImporte',
                    xtype: 'numberfield',
                    enableKeyEvents: true,
                    readOnly: true
                }, {
                    fieldLabel: 'Total',
                    name: 'Total',
                    xtype: 'numberfield',
                    readOnly: true,
                    enableKeyEvents: true
                }, {
                    fieldLabel: 'Numero',
                    name: 'Numero',
                    xtype: 'numberfield'
                }, {
                    fieldLabel: 'Comision',
                    name: 'Comision',
                    xtype: 'numberfield'
                }, {
                    fieldLabel: 'Comision Pagada',
                    name: 'ComisionPagada',
                    xtype: 'numberfield'
                }, {
                    fieldLabel: 'Bien Asegurado',
                    name: 'Inciso',
                    entityName: 'Autos',
                    xtype: 'entity.link',
                    canAdd: false,
                    disabled: true,
                    allowBlank: true
                }, {
                    fieldLabel: 'Tramite',
                    name: 'Tramite',
                    entityName: 'Tramites',
                    xtype: 'entity.link',
                    canAdd: false,
                    disabled: true,
                    allowBlank: false
                }, {
                    fieldLabel: 'Moneda',
                    name: 'Moneda',
                    entityName: 'Monedas',
                    xtype: 'entity.link',
                    canAdd: false,
                    disabled: true,
                    allowBlank: false
                }, {
                    fieldLabel: 'Liquidacion',
                    name: 'Liquidacion',
                    entityName: 'Liquidaciones',
                    xtype: 'entity.link',
                    canAdd: false,
                    disabled: false,
                    allowBlank: true
                }, {
                    fieldLabel: 'Conciliacion',
                    name: 'Conciliacion',
                    entityName: 'Conciliaciones',
                    xtype: 'entity.link',
                    canAdd: false,
                    disabled: false,
                    allowBlank: true
                }, {
                    fieldLabel: 'Tipo Recibo',
                    name: 'Tipo',
                    xtype: 'enum.combo',
                    enumName: 'Cognitum.Dominio.Cobranza.TipoReciboEnum'
                }, {
                    fieldLabel: 'Obs. Pago',
                    name: 'ObservacionPago',
                    allowBlank: true                    
                }]
},
                 {
                    title: 'Bitacora',
                    canUpdate: false,
                    canDelete: false,
                    items: [{
                        fieldLabel: 'Bitacoras',
                        hideLabel: true,
                        name: 'Bitacoras',
                        entityName: 'BitacorasTramite',
                        xtype: 'ag.list',
                        context: 'b.Tramite.Id=?',
                        anchor: '99% 99%'
}]
                    }, {
                        xtype: 'sec.editor',
                        title: 'Info Permisos'
                    }, {
                        xtype: 'aud.editor',
                        title: 'Auditoria'
}]
                    });

                    Cognitum.Cobranza.Recibo.Editor.superclass.initComponent.apply(this, arguments);
                },

                onKeyup2: function(field, e) {
                    this.calculaMonto(field);
                },

                calculaMonto: function(field) {
                    if (PLOG.isDebugEnabled()) {
                        LOG.debug('[EditorParts.CalculandoMonto] <-');
                    }

                    var sumatoria = 0;

                    var PrimaNeta = this.getForm().findField('PrimaNeta');
                    var Gastos = this.getForm().findField('Gastos');
                    var Recargo = this.getForm().findField('Recargo');
                    var Impuesto = this.getForm().findField('Impuesto');
                    var impuestoEntity = Impuesto.getEntityValue();
                    var ImpuestoValue = Ext.isEmpty(impuestoEntity) ? 0 : isNaN(impuestoEntity.Porcentaje) ? 0 : impuestoEntity.Porcentaje;
                    var impuestoImporte = this.getForm().findField('ImpuestoImporte');
                    var Total = this.getForm().findField('Total');

                    if (!Ext.isEmpty(field) && field.getName() == 'PrimaNeta') {
                        var valor = parseFloat(PrimaNeta.getValue());
                        if (valor == 'NaN') {
                            PrimaNeta.setValue('');
                        }
                        else {
                            PrimaNeta.setValue(formatAsCurrency(valor));
                        }
                    }

                    if (!Ext.isEmpty(field) && field.getName() == 'Gastos') {
                        var valor = parseFloat(Gastos.getValue());
                        if (valor == 'NaN') {
                            Gastos.setValue('');
                        }
                        else {
                            Gastos.setValue(formatAsCurrency(valor));
                        }
                    }

                    if (!Ext.isEmpty(field) && field.getName() == 'Recargo') {
                        var valor = parseFloat(Recargo.getValue());
                        if (valor == 'NaN') {
                            Recargo.setValue('');
                        }
                        else {
                            Recargo.setValue(formatAsCurrency(valor));
                        }
                    }

                    sumatoria = parseFloat(PrimaNeta.getValue()) + parseFloat(Gastos.getValue()) + parseFloat(Recargo.getValue());

                    impuestoImporte.setValue(formatAsCurrency(sumatoria * (parseFloat(ImpuestoValue) / 100)));

                    Total.setValue(formatAsCurrency(sumatoria + impuestoImporte.getValue()));

                    if (PLOG.isDebugEnabled()) {
                        LOG.debug('[EditorParts.CalculandoMonto] ->');
                    }

                },

                updateControls: function(value) {
                    if (Ext.isEmpty(value)) {
                        return;
                    }
                    // menu config
                    this.guardarBtn.setDisabled(value.Estatus != 0 && value.Estatus != 4);
                },

                getTBarDynamicControls: function(value) {
                    if (value.Id > 0) {
                        var cartaEntity = Karma.Core.ModuleManager.Instance.getEntity('Cartas');
                        return [{
                            fn: cartaEntity.getMenuRecibo,
                            params: value.Id,
                            scope: cartaEntity
}];
                        }
                    }

                });

Ext.reg('rec.editor', Cognitum.Cobranza.Recibo.Editor);
